home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Pascal Super Library
/
Pascal Super Library (CW International)(1997).bin
/
TURB_VIS
/
TCYBER25
/
COMMON.ZIP
/
COMMDLGS.PAS
next >
Wrap
Pascal/Delphi Source File
|
1994-10-20
|
28KB
|
246 lines
{
Turbo Vision CyberTools 2.5
(C) 1994 Steve Goldsmith
All Rights Reserved
}
UNIT COMMDLGS ;{$I APP.INC} INTERFACE USES DOS , DRIVERS , OBJECTS , MEMORY , VIEWS , DIALOGS , TEXTVIEW , VALIDATE ,
APP , EDITORS , STDDLG , MSGBOX , TOOLS , DIRVIEW , {$IFDEF UseDLL} CYBERAPI , {$ELSE} VGA , {$ENDIF} TVSTR ;
CONST CMMSGBUTTONPRESSCF =65100 ;CMDEFAULTPAL =65101 ;CMROOTDIR =65102 ;CMEXPAND =65103 ;CMWILDCARD =65104 ;
CMNEWDRIVE =65105 ;CMUPDATEFILES =65106 ;CMALLFILES =65107 ;CMMSGBUTTONPRESS =65108 ;CCHARCOLOR =#$00;CCHARPAL =#136;
CDIRVIEWER =#7#27#9#8;CFBUTTON =#32#224#225#226#32;CFBUTTONOFFON =#225#227;CFBOX =#32#228#229#230#32;
CFBOXOFFON =#229#231;DTDOSNAMESET :TCHARSET =[ '0'.. '9', 'A'.. 'Z', 'a'.. 'z', '_', '^', '$', '~', '!', '#', '%', '&',
'-', '{', '}', '@', '`', #39, '(', ')', '.'] ;CTLOGWIDTH =160 ;TYPE SCROPTSDATA =RECORD SMODE , FNTTBL1 ,
FNTTBL2 :INTEGER ;FCHR , LCHR :STRING [ 3 ] ;END ;PRADIOBUTTONSCF =^TRADIOBUTTONSCF ;
TRADIOBUTTONSCF =OBJECT (TRADIOBUTTONS)PROCEDURE DRAW ;VIRTUAL;END ;PCHECKBOXESCF =^TCHECKBOXESCF ;
TCHECKBOXESCF =OBJECT (TCHECKBOXES)PROCEDURE DRAW ;VIRTUAL;END ;PSCROPTSDLG =^TSCROPTSDLG ;
TSCROPTSDLG =OBJECT (TDIALOG)SCRMODE :PCHECKBOXESCF ;CHRTABLE1 , CHRTABLE2 :PRADIOBUTTONSCF ;FIRSTFIELD ,
LASTFIELD :PINPUTLINE ;CONSTRUCTOR INIT ;FUNCTION VALID (COMMAND :WORD ):BOOLEAN ;VIRTUAL;END ;
PCOLPALVIEW =^TCOLPALVIEW ;TCOLPALVIEW =OBJECT (TVIEW)STARTCOLOR :BYTE ;CONSTRUCTOR INIT (VAR BOUNDS :TRECT ;
STARTCOL :BYTE );PROCEDURE DRAW ;VIRTUAL;END ;PMSGBUTTONSCF =^TMSGBUTTONSCF ;
TMSGBUTTONSCF =OBJECT (TRADIOBUTTONSCF)PROCEDURE PRESS (ITEM :INTEGER );VIRTUAL;PROCEDURE MOVEDTO (ITEM :INTEGER );
VIRTUAL;END ;PPALDLG =^TPALDLG ;TPALDLG =OBJECT (TDIALOG)CURPAL :VGAPALETTE ;REDBAR , GREENBAR , BLUEBAR :PSCROLLBAR ;
DEFCOLOR :PMSGBUTTONSCF ;CONSTRUCTOR INIT ;PROCEDURE SETCOLORBARS (COLOR :BYTE );PROCEDURE CHANGEDAC ;
PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;END ;PCHRSETVIEW =^TCHRSETVIEW ;
TCHRSETVIEW =OBJECT (TVIEW)PROCEDURE DRAW ;VIRTUAL;END ;PCHRSETDLG =^TCHRSETDLG ;
TCHRSETDLG =OBJECT (TDIALOG)CONSTRUCTOR INIT (NAME :PATHSTR ;XLEN ,YLEN:WORD );FUNCTION GETPALETTE :PPALETTE ;VIRTUAL;
END ;PWINSIZEDLG =^TWINSIZEDLG ;TWINSIZEDLG =OBJECT (TDIALOG)CONSTRUCTOR INIT ;END ;PMSGBUTTONS =^TMSGBUTTONS ;
TMSGBUTTONS =OBJECT (TRADIOBUTTONS)PROCEDURE PRESS (ITEM :INTEGER );VIRTUAL;PROCEDURE MOVEDTO (ITEM :INTEGER );VIRTUAL;
END ;PDRIVEDLG =^TDRIVEDLG ;TDRIVEDLG =OBJECT (TDIALOG)DRIVEBOX :PLISTBOX ;CONSTRUCTOR INIT ;DESTRUCTOR DONE ;VIRTUAL;
PROCEDURE GETDATA (VAR REC );VIRTUAL;PROCEDURE SETDATA (VAR REC );VIRTUAL;PROCEDURE SIZELIMITS (VAR MIN ,MAX:TPOINT );
VIRTUAL;PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;END ;PSEARCHREC =^TSEARCHREC ;PDIRVIEWER =^TDIRVIEWER ;
TDIRVIEWER =OBJECT (TDIRECTORYVIEWER)PROCEDURE FOCUSED (I :INTEGER );VIRTUAL;PROCEDURE ADJUST (NODE :POINTER ;
EXPAND :BOOLEAN );VIRTUAL;FUNCTION GETPALETTE :PPALETTE ;VIRTUAL;END ;PINFOPANE =^TINFOPANE ;
TINFOPANE =OBJECT (TFILEINFOPANE)PROCEDURE DRAW ;VIRTUAL;END ;PDIRWINLINE =^TDIRWINLINE ;
TDIRWINLINE =OBJECT (TINPUTLINE)CONSTRUCTOR INIT (VAR BOUNDS :TRECT ;AMAXLEN :INTEGER );PROCEDURE HANDLEEVENT
(VAR EVENT :TEVENT );VIRTUAL;END ;PDIRWINDOW =^TDIRWINDOW ;TDIRWINDOW =OBJECT (TDIALOG)APPCMD :WORD ;WILDCARD :PATHSTR ;
NAMELINE :PDIRWINLINE ;DIRVIEW :PDIRVIEWER ;FILELIST :PFILELIST ;INFOPANE :PINFOPANE ;CONSTRUCTOR INIT (T :STRING ;
DRIVE ,FMASK:PATHSTR ;ACMD :WORD );FUNCTION FOCFILENAME :PATHSTR ;FUNCTION FOCDIRNAME :PATHSTR ;PROCEDURE HANDLEEVENT
(VAR EVENT :TEVENT );VIRTUAL;END ;PSTRLISTDLG =^TSTRLISTDLG ;TSTRLISTDLG =OBJECT (TDIALOG)STRBOX :PLISTBOX ;
CONSTRUCTOR INIT (TSTR :STRING );DESTRUCTOR DONE ;VIRTUAL;END ;PLOGTERM =^TLOGTERM ;
TLOGTERM =OBJECT (TTERMINAL)PROCEDURE STRWRITE (VAR S :TEXTBUF ;COUNT :BYTE );VIRTUAL;END ;PLOGWIN =^TLOGWIN ;
TLOGWIN =OBJECT (TWINDOW)LOGTERM :PLOGTERM ;CONSTRUCTOR INIT (WINTITLE :TTITLESTR ;ABUFSIZE :WORD );END ;
PCYFILEEDITOR =^TCYFILEEDITOR ;TCYFILEEDITOR =OBJECT (TFILEEDITOR)FUNCTION VALID (COMMAND :WORD ):BOOLEAN ;VIRTUAL;END ;
PCYEDITWINDOW =^TCYEDITWINDOW ;TCYEDITWINDOW =OBJECT (TEDITWINDOW)CONSTRUCTOR INIT (VAR BOUNDS :TRECT ;
FILENAME :FNAMESTR ;ANUMBER :INTEGER );END ;FUNCTION APPSYSTEMERROR (ERRORCODE :INTEGER ;DRIVE :BYTE ):INTEGER ;
IMPLEMENTATION CONST O1OOllIOllIO:ARRAY [ 0 .. 15 ] OF STRING [ 42 ] =('Disk is write-protected in drive %c',
'Unknown unit error on drive %c', 'Disk is not ready in drive %c', 'Unknown command on drive %c',
'Data integrity error on drive %c', 'Bad requested structure length on drive %c', 'Seek error on drive %c',
'Unknown media type in drive %c', 'Sector not found on drive %c', 'Printer out of paper', 'Write fault on drive %c',
'Read fault on drive %c', 'Hardware failure on drive %c', 'Bad memory image of FAT detected', 'Device access error',
'Insert diskette in drive %c');FUNCTION APPSYSTEMERROR (ERRORCODE:INTEGER;DRIVE:BYTE):INTEGER ;VAR OO10:LONGINT;
BEGIN OO10 := LONGINT (DRIVE + 65 );MESSAGEBOX (O1OOllIOllIO [ ERRORCODE ] , @ OO10 , MFOKBUTTON + MFERROR );
APPSYSTEMERROR := 1 END ;PROCEDURE TRADIOBUTTONSCF.DRAW ;BEGIN DRAWMULTIBOX (CFBUTTON , CFBUTTONOFFON )END ;
PROCEDURE TCHECKBOXESCF.DRAW ;BEGIN DRAWMULTIBOX (CFBOX , CFBOXOFFON )END ;CONSTRUCTOR TSCROPTSDLG.INIT ;VAR OO1I:TRECT;
BEGIN OO1I.ASSIGN (0 , 0 , 52 , 12 );INHERITED INIT(OO1I , 'Screen');OPTIONS := OPTIONS OR OFVALIDATE ;OO1I.ASSIGN (2 , 3
, 17 , 7 );SCRMODE := NEW (PCHECKBOXESCF , INIT (OO1I , NEWSITEM ('640 X 400', NEWSITEM ('Paging', NEWSITEM ('8 colors',
NIL )))));INSERT (SCRMODE );OO1I.ASSIGN (1 , 2 , 13 , 3 );INSERT (NEW (PLABEL , INIT (OO1I , '~S~creen mode', SCRMODE
)));OO1I.ASSIGN (18 , 3 , 33 , 7 );CHRTABLE1 := NEW (PRADIOBUTTONSCF , INIT (OO1I , NEWSITEM ('0', NEWSITEM ('1',
NEWSITEM ('2', NEWSITEM ('3', NEWSITEM ('4', NEWSITEM ('5', NEWSITEM ('6', NEWSITEM ('7', NIL ))))))))));INSERT
(CHRTABLE1 );OO1I.ASSIGN (17 , 2 , 30 , 3 );INSERT (NEW (PLABEL , INIT (OO1I , 'Font ~1~ table', CHRTABLE1 )));
OO1I.ASSIGN (34 , 3 , 50 , 7 );CHRTABLE2 := NEW (PRADIOBUTTONSCF , INIT (OO1I , NEWSITEM ('0', NEWSITEM ('1', NEWSITEM
('2', NEWSITEM ('3', NEWSITEM ('4', NEWSITEM ('5', NEWSITEM ('6', NEWSITEM ('7', NIL ))))))))));INSERT (CHRTABLE2 );
OO1I.ASSIGN (33 , 2 , 46 , 3 );INSERT (NEW (PLABEL , INIT (OO1I , 'Font ~2~ table', CHRTABLE2 )));OO1I.ASSIGN (13 , 8 ,
18 , 9 );FIRSTFIELD := NEW (PINPUTLINE , INIT (OO1I , 3 ));FIRSTFIELD ^. SETVALIDATOR (NEW (PRANGEVALIDATOR , INIT (0 ,
255 )));INSERT (FIRSTFIELD );OO1I.ASSIGN (1 , 8 , 12 , 9 );INSERT (NEW (PLABEL , INIT (OO1I , '~F~irst char', FIRSTFIELD
)));OO1I.ASSIGN (13 , 9 , 18 , 10 );LASTFIELD := NEW (PINPUTLINE , INIT (OO1I , 3 ));LASTFIELD ^. SETVALIDATOR (NEW
(PRANGEVALIDATOR , INIT (0 , 255 )));INSERT (LASTFIELD );OO1I.ASSIGN (1 , 9 , 12 , 10 );INSERT (NEW (PLABEL , INIT (OO1I
, '~L~ast char', LASTFIELD )));OO1I.ASSIGN (26 , 9 , 36 , 11 );INSERT (NEW (PBUTTON , INIT (OO1I , 'O~K~', CMOK ,
BFDEFAULT )));OO1I.ASSIGN (38 , 9 , 48 , 11 );INSERT (NEW (PBUTTON , INIT (OO1I , 'Cancel', CMCANCEL , BFNORMAL )))END ;
FUNCTION TSCROPTSDLG.VALID (COMMAND:WORD):BOOLEAN ;VAR OIOI100IlI0:BOOLEAN;BEGIN OIOI100IlI0 := INHERITED VALID(COMMAND
);IF (COMMAND <> CMCANCEL )AND (STRTOINT (LASTFIELD ^. DATA ^)< STRTOINT (FIRSTFIELD ^. DATA ^))THEN BEGIN MESSAGEBOX
('Last save char must be greater than or equal to First save char.', NIL , MFOKBUTTON + MFERROR );OIOI100IlI0 := FALSE
END ;VALID := OIOI100IlI0 END ;CONSTRUCTOR TCOLPALVIEW.INIT (VAR BOUNDS:TRECT;STARTCOL:BYTE);BEGIN INHERITED INIT(BOUNDS
);STARTCOLOR := STARTCOL END ;PROCEDURE TCOLPALVIEW.DRAW ;VAR OOO0l1010lIO:WORD;OOIl,OOllOI000O1l:BYTE;
BEGIN OOllOI000O1l := GETCOLOR (6 )AND $f0 ;FOR OOIl := 0 TO SIZE.Y - 1 DO BEGIN OOO0l1010lIO := ((OOllOI000O1l OR
(STARTCOLOR + OOIl ))SHL 8 )OR 219 ;WRITELINE (0 , OOIl , 1 , 1 , OOO0l1010lIO )END END ;PROCEDURE TMSGBUTTONSCF.PRESS
(ITEM:INTEGER);BEGIN INHERITED PRESS(ITEM );MESSAGE (OWNER , EVBROADCAST , CMMSGBUTTONPRESSCF , NIL )END ;
PROCEDURE TMSGBUTTONSCF.MOVEDTO (ITEM:INTEGER);BEGIN INHERITED MOVEDTO(ITEM );MESSAGE (OWNER , EVBROADCAST ,
CMMSGBUTTONPRESSCF , NIL )END ;CONSTRUCTOR TPALDLG.INIT ;VAR OO1I:TRECT;BEGIN OO1I.ASSIGN (0 , 0 , 40 , 21 );
INHERITED INIT(OO1I , 'Adjust Palette');OO1I.ASSIGN (2 , 3 , 38 , 11 );DEFCOLOR := NEW (PMSGBUTTONSCF , INIT (OO1I ,
NEWSITEM ('Black', NEWSITEM ('Blue', NEWSITEM ('Green', NEWSITEM ('Cyan', NEWSITEM ('Red', NEWSITEM ('Magenta', NEWSITEM
('Brown', NEWSITEM ('Light Gray', NEWSITEM ('Gray', NEWSITEM ('Light Blue', NEWSITEM ('Light Green', NEWSITEM
('Light Cyan', NEWSITEM ('Light Red', NEWSITEM ('Light Magenta', NEWSITEM ('Yellow', NEWSITEM ('White', NIL
))))))))))))))))));INSERT (DEFCOLOR );OO1I.ASSIGN (1 , 2 , 7 , 3 );INSERT (NEW (PLABEL , INIT (OO1I , '~C~olors',
DEFCOLOR )));OO1I.ASSIGN (6 , 3 , 7 , 11 );INSERT (NEW (PCOLPALVIEW , INIT (OO1I , 0 )));OO1I.ASSIGN (22 , 3 , 23 , 11 );
INSERT (NEW (PCOLPALVIEW , INIT (OO1I , 8 )));OO1I.ASSIGN (2 , 12 , 36 , 13 );REDBAR := NEW (PSCROLLBAR , INIT (OO1I ));
REDBAR ^. SETPARAMS (0 , 0 , 63 , 8 , 1 );REDBAR ^. OPTIONS := REDBAR ^. OPTIONS OR OFSELECTABLE ;INSERT (REDBAR );
OO1I.ASSIGN (1 , 11 , 5 , 12 );INSERT (NEW (PLABEL , INIT (OO1I , '~R~ed', REDBAR )));OO1I.ASSIGN (2 , 14 , 36 , 15 );
GREENBAR := NEW (PSCROLLBAR , INIT (OO1I ));GREENBAR ^. SETPARAMS (0 , 0 , 63 , 8 , 1 );GREENBAR ^. OPTIONS := GREENBAR
^. OPTIONS OR OFSELECTABLE ;INSERT (GREENBAR );OO1I.ASSIGN (1 , 13 , 7 , 14 );INSERT (NEW (PLABEL , INIT (OO1I ,
'~G~reen', GREENBAR )));OO1I.ASSIGN (2 , 16 , 36 , 17 );BLUEBAR := NEW (PSCROLLBAR , INIT (OO1I ));BLUEBAR ^. SETPARAMS
(0 , 0 , 63 , 8 , 1 );BLUEBAR ^. OPTIONS := BLUEBAR ^. OPTIONS OR OFSELECTABLE ;INSERT (BLUEBAR );OO1I.ASSIGN (1 , 15 , 6
, 16 );INSERT (NEW (PLABEL , INIT (OO1I , '~B~lue', BLUEBAR )));OO1I.ASSIGN (1 , 18 , 11 , 20 );INSERT (NEW (PBUTTON ,
INIT (OO1I , 'O~K~', CMOK , BFDEFAULT )));OO1I.ASSIGN (12 , 18 , 22 , 20 );INSERT (NEW (PBUTTON , INIT (OO1I , 'Cancel',
CMCANCEL , BFNORMAL )));OO1I.ASSIGN (23 , 18 , 36 , 20 );INSERT (NEW (PBUTTON , INIT (OO1I , '~D~efault', CMDEFAULTPAL ,
BFNORMAL )));GETDACBLOCK (@ CURPAL , 0 , 256 );SETCOLORBARS (0 );SELECTNEXT (FALSE )END ;PROCEDURE TPALDLG.SETCOLORBARS
(COLOR:BYTE);VAR OO1I,OIl1,OIO1:BYTE;BEGIN GETDAC (GETATTRCONT (COLOR ), OO1I , OIl1 , OIO1 );REDBAR ^. SETVALUE (OO1I );
GREENBAR ^. SETVALUE (OIl1 );BLUEBAR ^. SETVALUE (OIO1 )END ;PROCEDURE TPALDLG.CHANGEDAC ;VAR OO1I,OIl1,OIO1:BYTE;
BEGIN GETDAC (GETATTRCONT (DEFCOLOR ^. VALUE ), OO1I , OIl1 , OIO1 );IF REDBAR ^. STATE AND SFSELECTED =SFSELECTED THEN
OO1I := REDBAR ^. VALUE ELSE IF GREENBAR ^. STATE AND SFSELECTED =SFSELECTED THEN OIl1 := GREENBAR ^. VALUE ELSE IF
BLUEBAR ^. STATE AND SFSELECTED =SFSELECTED THEN OIO1 := BLUEBAR ^. VALUE ;SETDAC (GETATTRCONT (DEFCOLOR ^. VALUE ), OO1I
, OIl1 , OIO1 );END ;PROCEDURE TPALDLG.HANDLEEVENT (VAR EVENT:TEVENT);BEGIN IF (EVENT.WHAT =EVCOMMAND )AND
((EVENT.COMMAND =CMCANCEL )OR (EVENT.COMMAND =CMCLOSE ))THEN SETDACBLOCK (@ CURPAL , 0 , 256 );
INHERITED HANDLEEVENT(EVENT );CASE EVENT.WHAT OF EVCOMMAND :BEGIN CASE EVENT.COMMAND OF CMOK :CLOSE ;CMDEFAULTPAL
:BEGIN SETDACBLOCK (@ CURPAL , 0 , 256 );SETCOLORBARS (DEFCOLOR ^. VALUE )END ELSE EXIT END ;CLEAREVENT (EVENT )END ;
EVBROADCAST :BEGIN CASE EVENT.COMMAND OF CMSCROLLBARCHANGED :CHANGEDAC ;CMMSGBUTTONPRESSCF :SETCOLORBARS (DEFCOLOR ^.
VALUE )END END END END ;PROCEDURE TCHRSETVIEW.DRAW ;VAR OI1OllllOl1:TDRAWBUFFER;OOIO,OOIl:INTEGER;OOllOI000O1l:WORD;
BEGIN OOllOI000O1l := GETCOLOR (33 );FOR OOIl := 0 TO SIZE.Y - 1 DO BEGIN FOR OOIO := 0 TO SIZE.X - 1 DO OI1OllllOl1 [
OOIO ] := (OOIl * SIZE.X + OOIO )OR (OOllOI000O1l SHL 8 );WRITEBUF (0 , OOIl , SIZE.X , 1 , OI1OllllOl1 );END END ;
CONSTRUCTOR TCHRSETDLG.INIT (NAME:PATHSTR;XLEN,YLEN:WORD);VAR OO1I:TRECT;BEGIN OO1I.ASSIGN (0 , 0 , XLEN + 2 , YLEN + 2
);INHERITED INIT(OO1I , NAME );GETEXTENT (OO1I );OO1I.GROW (- 1 , - 1 );INSERT (NEW (PCHRSETVIEW , INIT (OO1I )))END ;
FUNCTION TCHRSETDLG.GETPALETTE :PPALETTE ;CONST OOlOIOI1Oll1=CBLUEDIALOG+ CCHARPAL;O10O1I10lIIO0=CCYANDIALOG+ CCHARPAL;
OIO1IO1ll10=CGRAYDIALOG+ CCHARPAL;OO10:ARRAY [ DPBLUEDIALOG.. DPGRAYDIALOG] OF STRING [ LENGTH(OOlOIOI1Oll1)]
=(OOlOIOI1Oll1, O10O1I10lIIO0, OIO1IO1ll10);BEGIN GETPALETTE := @ OO10 [ PALETTE ] END ;CONSTRUCTOR TWINSIZEDLG.INIT ;
VAR OO1I:TRECT;BEGIN OO1I.ASSIGN (0 , 0 , 26 , 9 );INHERITED INIT(OO1I , 'Window Size');OO1I.ASSIGN (2 , 2 , 24 , 5 );
INSERT (NEW (PRADIOBUTTONSCF , INIT (OO1I , NEWSITEM ('128 X 256', NEWSITEM ('256 X 128', NEWSITEM ('512 X 64', NIL
))))));OO1I.ASSIGN (2 , 6 , 12 , 8 );INSERT (NEW (PBUTTON , INIT (OO1I , 'O~K~', CMOK , BFDEFAULT )));OO1I.ASSIGN (14 , 6
, 24 , 8 );INSERT (NEW (PBUTTON , INIT (OO1I , 'Cancel', CMCANCEL , BFNORMAL )))END ;PROCEDURE TMSGBUTTONS.PRESS
(ITEM:INTEGER);BEGIN INHERITED PRESS(ITEM );MESSAGE (OWNER , EVBROADCAST , CMMSGBUTTONPRESS , NIL )END ;
PROCEDURE TMSGBUTTONS.MOVEDTO (ITEM:INTEGER);BEGIN INHERITED MOVEDTO(ITEM );MESSAGE (OWNER , EVBROADCAST ,
CMMSGBUTTONPRESS , NIL )END ;CONSTRUCTOR TDRIVEDLG.INIT ;VAR OI1Il0OlO1I1:CHAR;OO1O:STRING ;OO1I:TRECT;
OOIOI1II00l1:PSCROLLBAR;BEGIN OO1I.ASSIGN (0 , 0 , 9 , 8 );INHERITED INIT(OO1I , '');OPTIONS := OPTIONS OR OFCENTERED ;
OO1I.ASSIGN (6 , 2 , 7 , 6 );NEW (OOIOI1II00l1 , INIT (OO1I ));INSERT (OOIOI1II00l1 );OO1I.ASSIGN (2 , 2 , 6 , 6 );
DRIVEBOX := NEW (PLISTBOX , INIT (OO1I , 1 , OOIOI1II00l1 ));DRIVEBOX ^. LIST := NEW (PSTRINGCOLLECTION , INIT (0 , 1 ));
INSERT (DRIVEBOX );FOR OI1Il0OlO1I1 := 'A'TO 'Z' DO BEGIN IF DRIVEVALID (OI1Il0OlO1I1 )THEN BEGIN OO1O := OI1Il0OlO1I1 +
':';DRIVEBOX ^. LIST ^. INSERT (NEWSTR (OO1O ))END END ;DRIVEBOX ^. SETRANGE (DRIVEBOX ^. LIST ^. COUNT );DRIVEBOX ^.
DRAWVIEW END ;DESTRUCTOR TDRIVEDLG.DONE ;BEGIN IF DRIVEBOX ^. LIST <> NIL THEN DISPOSE (DRIVEBOX ^. LIST , DONE );
INHERITED DONE END ;PROCEDURE TDRIVEDLG.GETDATA (VAR REC);BEGIN CHAR (REC ):= PSTRING (DRIVEBOX ^. LIST ^. AT (DRIVEBOX ^.
FOCUSED ))^[ 1 ] END ;PROCEDURE TDRIVEDLG.SETDATA (VAR REC);BEGIN END ;PROCEDURE TDRIVEDLG.SIZELIMITS
(VAR MIN,MAX:TPOINT);BEGIN INHERITED SIZELIMITS(MIN , MAX );MIN.X := 9 END ;PROCEDURE TDRIVEDLG.HANDLEEVENT
(VAR EVENT:TEVENT);BEGIN IF ((EVENT.WHAT =EVMOUSEDOWN )AND (EVENT.DOUBLE )AND (DRIVEBOX ^. MOUSEINVIEW (EVENT.WHERE )))OR
((EVENT.WHAT =EVKEYDOWN )AND (EVENT.KEYCODE =KBENTER ))THEN BEGIN EVENT.WHAT := EVCOMMAND ;EVENT.COMMAND := CMOK ;
PUTEVENT (EVENT );CLEAREVENT (EVENT )END ;INHERITED HANDLEEVENT(EVENT )END ;PROCEDURE TDIRVIEWER.FOCUSED (I:INTEGER);
BEGIN INHERITED FOCUSED(I );IF NOT LOWMEMORY THEN PDIRWINDOW (OWNER )^. FILELIST ^. READDIRECTORY (PDIRWINDOW (OWNER )^.
FOCDIRNAME + PDIRWINDOW (OWNER )^. WILDCARD )END ;PROCEDURE TDIRVIEWER.ADJUST (NODE:POINTER;EXPAND:BOOLEAN);BEGIN IF
EXPAND THEN BEGIN IF NOT ISEXPANDED (NODE )THEN INHERITED ADJUST(NODE , EXPAND )END ELSE IF ISEXPANDED (NODE )THEN
INHERITED ADJUST(NODE , EXPAND )END ;FUNCTION TDIRVIEWER.GETPALETTE :PPALETTE ;CONST OI11l1IO0Il:STRING [
LENGTH(CDIRVIEWER)] =CDIRVIEWER;BEGIN GETPALETTE := @ OI11l1IO0Il ;END ;PROCEDURE TINFOPANE.DRAW ;
VAR O10O00l001110:BOOLEAN;OOllOI000O1l:WORD;O10OI110Il0II:ARRAY [ 0 .. 7 ] OF LONGINT;OllIl0OI11:STRING [ 9 ] ;
OOO01IIlOl1O:STRING [ 3 ] ;OIOl01Il1Il:STRING [ 80 ] ;OIIOIOII11I:STRING ;OI111O0100ll:DATETIME;OIlIl0O0O00:PATHSTR;
OOIlO1Ol1111:TDRAWBUFFER;CONST O10Ol1OII1lO1=' %-12s %-9s %3s %2d, %4d %2d:%02d%cm';
O1O1ll1I1=' %-12s %-9d %3s %2d, %4d %2d:%02d%cm';OIlIl1O1O00:ARRAY [ 1 .. 12 ] OF STRING [ 3 ] =('Jan', 'Feb', 'Mar',
'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');BEGIN OIlIl0O0O00 := PDIRWINDOW (OWNER )^. FOCDIRNAME +
PDIRWINDOW (OWNER )^. WILDCARD ;OOllOI000O1l := GETCOLOR ($01 );MOVECHAR (OOIlO1Ol1111 , ' ', OOllOI000O1l , SIZE.X );
MOVESTR (OOIlO1Ol1111 [ 1 ] , OIlIl0O0O00 , OOllOI000O1l );WRITELINE (0 , 0 , SIZE.X , 1 , OOIlO1Ol1111 );IF S.NAME <>
''THEN BEGIN O10OI110Il0II [ 0 ] := LONGINT (@ S.NAME );MOVECHAR (OOIlO1Ol1111 , ' ', OOllOI000O1l , SIZE.X );
O10OI110Il0II [ 0 ] := LONGINT (@ S.NAME );IF S.ATTR AND DIRECTORY <> 0 THEN BEGIN OIIOIOII11I := O10Ol1OII1lO1 ;
OllIl0OI11 := 'Directory';O10OI110Il0II [ 1 ] := LONGINT (@ OllIl0OI11 );END ELSE BEGIN OIIOIOII11I := O1O1ll1I1 ;
O10OI110Il0II [ 1 ] := S.SIZE ;END ;UNPACKTIME (S.TIME , OI111O0100ll );OOO01IIlOl1O := OIlIl1O1O00 [ OI111O0100ll.MONTH
] ;O10OI110Il0II [ 2 ] := LONGINT (@ OOO01IIlOl1O );O10OI110Il0II [ 3 ] := OI111O0100ll.DAY ;O10OI110Il0II [ 4 ] :=
OI111O0100ll.YEAR ;O10O00l001110 := OI111O0100ll.HOUR >= 12 ;OI111O0100ll.HOUR := OI111O0100ll.HOUR MOD 12 ;IF
OI111O0100ll.HOUR =0 THEN OI111O0100ll.HOUR := 12 ;O10OI110Il0II [ 5 ] := OI111O0100ll.HOUR ;O10OI110Il0II [ 6 ] :=
OI111O0100ll.MIN ;IF O10O00l001110 THEN O10OI110Il0II [ 7 ] := BYTE ('p')ELSE O10OI110Il0II [ 7 ] := BYTE ('a');
FORMATSTR (OIOl01Il1Il , OIIOIOII11I , O10OI110Il0II )END ELSE OIOl01Il1Il := FILLSTR (' ', SIZE.X );MOVESTR
(OOIlO1Ol1111 , OIOl01Il1Il , OOllOI000O1l );WRITELINE (0 , 1 , SIZE.X , 1 , OOIlO1Ol1111 )END ;
CONSTRUCTOR TDIRWINLINE.INIT (VAR BOUNDS:TRECT;AMAXLEN:INTEGER);BEGIN INHERITED INIT(BOUNDS , AMAXLEN );EVENTMASK :=
EVENTMASK OR EVBROADCAST END ;PROCEDURE TDIRWINLINE.HANDLEEVENT (VAR EVENT:TEVENT);VAR OI111IlIO100:PATHSTR;
BEGIN INHERITED HANDLEEVENT(EVENT );IF (EVENT.WHAT =EVBROADCAST )AND (EVENT.COMMAND =CMFILEFOCUSED )AND (STATE AND
SFSELECTED =0 )THEN BEGIN OI111IlIO100 := PDIRWINDOW (OWNER )^. FOCFILENAME ;IF OI111IlIO100 [ BYTE (OI111IlIO100 [ 0 ]
)] ='\'THEN OI111IlIO100 := '';SETDATA (OI111IlIO100 )END END ;CONSTRUCTOR TDIRWINDOW.INIT (T:STRING ;
DRIVE,FMASK:PATHSTR;ACMD:WORD);VAR OO1I:TRECT;OI10O0lOOI0,OI10O0lOIl1:PSCROLLBAR;BEGIN OO1I.ASSIGN (0 , 0 , 67 , 17 );
INHERITED INIT(OO1I , T );OPTIONS := OPTIONS OR OFCENTERED ;APPCMD := ACMD ;WILDCARD := FMASK ;GETEXTENT (OO1I );
OO1I.ASSIGN (OO1I.A.X + 22 , OO1I.A.Y + 4 , OO1I.A.X + 23 , OO1I.B.Y - 5 );OI10O0lOOI0 := NEW (PSCROLLBAR , INIT (OO1I
));OI10O0lOOI0 ^. OPTIONS := OI10O0lOOI0 ^. OPTIONS OR OFPOSTPROCESS ;INSERT (OI10O0lOOI0 );GETEXTENT (OO1I );
OO1I.ASSIGN (OO1I.A.X + 4 , OO1I.B.Y - 5 , OO1I.A.X + 21 , OO1I.B.Y - 4 );OI10O0lOIl1 := NEW (PSCROLLBAR , INIT (OO1I ));
OI10O0lOIl1 ^. OPTIONS := OI10O0lOIl1 ^. OPTIONS OR OFPOSTPROCESS ;INSERT (OI10O0lOIl1 );GETEXTENT (OO1I );OO1I.ASSIGN
(OO1I.A.X + 3 , OO1I.A.Y + 4 , OO1I.A.X + 22 , OO1I.B.Y - 5 );DIRVIEW := NEW (PDIRVIEWER , INIT (OO1I , OI10O0lOIl1 ,
OI10O0lOOI0 , NEW (PDIRECTORY , INIT (DRIVE ))));WITH DIRVIEW^ DO BEGIN OPTIONS := OPTIONS OR OFFIRSTCLICK OR OFFRAMED ;
ADJUST (GETROOT , TRUE );GROWMODE := GFGROWHIY ;UPDATE ;END ;INSERT (DIRVIEW );GETEXTENT (OO1I );OO1I.ASSIGN (OO1I.A.X +
1 , OO1I.A.Y + 2 , OO1I.A.X + 6 , OO1I.A.Y + 3 );INSERT (NEW (PLABEL , INIT (OO1I , '~D~ir', DIRVIEW )));GETEXTENT (OO1I
);OO1I.ASSIGN (OO1I.A.X + 24 , OO1I.A.Y + 3 , OO1I.B.X - 12 , OO1I.A.Y + 4 );NAMELINE := NEW (PDIRWINLINE , INIT (OO1I ,
128 ));NAMELINE ^. SETVALIDATOR (NEW (PFILTERVALIDATOR , INIT (DTDOSNAMESET )));INSERT (NAMELINE );GETEXTENT (OO1I );
OO1I.ASSIGN (OO1I.A.X + 23 , OO1I.A.Y + 2 , OO1I.A.X + 30 , OO1I.A.Y + 3 );INSERT (NEW (PLABEL , INIT (OO1I , '~N~ame',
NAMELINE )));GETEXTENT (OO1I );OO1I.ASSIGN (OO1I.A.X + 24 , OO1I.B.Y - 5 , OO1I.B.X - 12 , OO1I.B.Y - 4 );OI10O0lOIl1 :=
NEW (PSCROLLBAR , INIT (OO1I ));OI10O0lOIl1 ^. OPTIONS := OI10O0lOIl1 ^. OPTIONS OR OFPOSTPROCESS ;INSERT (OI10O0lOIl1 );
GETEXTENT (OO1I );OO1I.ASSIGN (OO1I.A.X + 24 , OO1I.A.Y + 5 , OO1I.B.X - 12 , OO1I.B.Y - 5 );FILELIST := NEW (PFILELIST ,
INIT (OO1I , PSCROLLBAR (OI10O0lOIl1 )));INSERT (FILELIST );GETEXTENT (OO1I );OO1I.ASSIGN (OO1I.A.X + 23 , OO1I.A.Y + 4 ,
OO1I.A.X + 30 , OO1I.A.Y + 5 );INSERT (NEW (PLABEL , INIT (OO1I , 'Files', FILELIST )));GETEXTENT (OO1I );OO1I.ASSIGN
(OO1I.A.X + 2 , OO1I.B.Y - 3 , OO1I.B.X - 12 , OO1I.B.Y - 1 );INFOPANE := NEW (PINFOPANE , INIT (OO1I ));INSERT (INFOPANE
);IF DRIVE [ BYTE (DRIVE [ 0 ] )] <> '\'THEN FILELIST ^. READDIRECTORY (DRIVE + '\'+ WILDCARD )ELSE FILELIST ^.
READDIRECTORY (DRIVE + WILDCARD );GETEXTENT (OO1I );OO1I.ASSIGN (OO1I.B.X - 12 , OO1I.A.Y + 2 , OO1I.B.X - 2 , OO1I.A.Y +
4 );INSERT (NEW (PBUTTON , INIT (OO1I , 'O~K~', CMOK , BFDEFAULT )));OO1I.ASSIGN (OO1I.A.X , OO1I.A.Y + 2 , OO1I.B.X ,
OO1I.A.Y + 4 );INSERT (NEW (PBUTTON , INIT (OO1I , '~R~oot', CMROOTDIR , BFNORMAL )));OO1I.ASSIGN (OO1I.A.X , OO1I.A.Y +
2 , OO1I.B.X , OO1I.A.Y + 4 );INSERT (NEW (PBUTTON , INIT (OO1I , '~E~xpand', CMEXPAND , BFNORMAL )));OO1I.ASSIGN
(OO1I.A.X , OO1I.A.Y + 2 , OO1I.B.X , OO1I.A.Y + 4 );INSERT (NEW (PBUTTON , INIT (OO1I , '~M~ask', CMWILDCARD , BFNORMAL
)));OO1I.ASSIGN (OO1I.A.X , OO1I.A.Y + 2 , OO1I.B.X , OO1I.A.Y + 4 );INSERT (NEW (PBUTTON , INIT (OO1I , 'Dri~v~e',
CMNEWDRIVE , BFNORMAL )));OO1I.ASSIGN (OO1I.A.X , OO1I.A.Y + 2 , OO1I.B.X , OO1I.A.Y + 4 );INSERT (NEW (PBUTTON , INIT
(OO1I , '~U~pdate', CMUPDATEFILES , BFNORMAL )));OO1I.ASSIGN (OO1I.A.X , OO1I.A.Y + 2 , OO1I.B.X , OO1I.A.Y + 4 );INSERT
(NEW (PBUTTON , INIT (OO1I , '~A~ll', CMALLFILES , BFNORMAL )));FILELIST ^. FOCUS END ;FUNCTION TDIRWINDOW.FOCFILENAME
:PATHSTR ;VAR OO1O:PSEARCHREC;BEGIN OO1O := PSEARCHREC (FILELIST ^. LIST ^. AT (FILELIST ^. FOCUSED ));IF OO1O ^. ATTR
AND DIRECTORY =0 THEN FOCFILENAME := OO1O ^. NAME ELSE FOCFILENAME := OO1O ^. NAME + '\'END ;
FUNCTION TDIRWINDOW.FOCDIRNAME :PATHSTR ;VAR OIOO:PATHSTR;BEGIN OIOO := PDIRECTORY (DIRVIEW ^. GETNODE (DIRVIEW ^. FOC
))^. DIR ^;IF OIOO [ BYTE (OIOO [ 0 ] )] <> '\'THEN FOCDIRNAME := OIOO + '\'ELSE FOCDIRNAME := OIOO END ;
PROCEDURE TDIRWINDOW.HANDLEEVENT (VAR EVENT:TEVENT);PROCEDURE O1OOO0lII00l (OI1Il0OlO1I1:CHAR);VAR OO1O:TSEARCHREC;
OIOO:PATHSTR;BEGIN WITH DIRVIEW^ DO BEGIN DISPOSE (ROOT , DONE );ROOT := NEW (PDIRECTORY , INIT (OI1Il0OlO1I1 + ':'));IF
DOSERROR <> 0 THEN BEGIN IF DOSERROR <> 18 THEN BEGIN DISPOSE (ROOT , DONE );GETDIR (0 , OIOO );ROOT := NEW (PDIRECTORY ,
INIT (OIOO ))END ELSE BEGIN FILLCHAR (OO1O , SIZEOF (OO1O ), 0 );MESSAGE (INFOPANE , EVBROADCAST , CMFILEFOCUSED , @ OO1O
);NAMELINE ^. SETDATA (OO1O.NAME )END END ;ADJUST (ROOT , TRUE );FOC := 0 ;SEARCHPOS := 0 ;OLDFOC := 0 ;FOCUSED (FOC );
SETCURSOR (0 , 0 );UPDATE ;DRAWVIEW END END ;PROCEDURE O1Ol0lI10lI0 ;VAR OI1Il0OlO1I1:PATHSTR;BEGIN GETDIR (0 ,
OI1Il0OlO1I1 );O1OOO0lII00l (OI1Il0OlO1I1 [ 1 ] )END ;PROCEDURE O1IO01IOO1 ;BEGIN WITH DIRVIEW^ DO BEGIN ADJUST (GETNODE
(FOC ), NOT ISEXPANDED (GETNODE (FOC )));UPDATE ;DRAWVIEW END END ;PROCEDURE OIII1O10O1l ;VAR OOII:PATHSTR;BEGIN OOII :=
WILDCARD ;IF INPUTBOX ('', 'File mask', OOII , 12 )<> CMCANCEL THEN BEGIN WILDCARD := UPCASESTR (OOII );DIRVIEW ^.
FOCUSED (DIRVIEW ^. FOC )END END ;PROCEDURE O1OO0O0O1l0I ;VAR OI1Il0OlO1I1:CHAR;OIOO:PDRIVEDLG;BEGIN OIOO := NEW
(PDRIVEDLG , INIT );IF APPLICATION ^. EXECUTEDIALOG (OIOO , @ OI1Il0OlO1I1 )<> CMCANCEL THEN O1OOO0lII00l (OI1Il0OlO1I1
)END ;PROCEDURE OI0lIO0O00ll ;BEGIN DIRVIEW ^. FOCUSED (DIRVIEW ^. FOC )END ;PROCEDURE O1OlO0Ol1I00 ;
PROCEDURE O101l0O0O110I (OI1000l1II00:POINTER);FAR ;VAR OI111IlIO100:PATHSTR;OO1O:PSEARCHREC;BEGIN OO1O := PSEARCHREC
(OI1000l1II00 );IF OO1O ^. ATTR AND DIRECTORY =0 THEN BEGIN NAMELINE ^. DATA ^:= OO1O ^. NAME ;MESSAGE (APPLICATION ,
EVBROADCAST , APPCMD , @ SELF )END END ;VAR OIOllO11ll1:PATHSTR;BEGIN IF MESSAGEBOX (#13#3'Process all files?', NIL ,
MFCONFIRMATION OR MFYESNOCANCEL )=CMYES THEN BEGIN OIOllO11ll1 := NAMELINE ^. DATA ^;FILELIST ^. LIST ^. FOREACH (@
O101l0O0O110I );NAMELINE ^. DATA ^:= OIOllO11ll1 END END ;BEGIN INHERITED HANDLEEVENT(EVENT );CASE EVENT.WHAT
OF EVCOMMAND :BEGIN CASE EVENT.COMMAND OF CMOK :BEGIN IF (NAMELINE ^. DATA ^[ BYTE (NAMELINE ^. DATA ^[ 0 ] )] <>
'\')AND (NAMELINE ^. DATA ^<> '')THEN MESSAGE (APPLICATION , EVBROADCAST , APPCMD , @ SELF )END ;CMROOTDIR :O1Ol0lI10lI0
;CMEXPAND :O1IO01IOO1 ;CMWILDCARD :OIII1O10O1l ;CMNEWDRIVE :O1OO0O0O1l0I ;CMUPDATEFILES :OI0lIO0O00ll ;CMALLFILES
:O1OlO0Ol1I00 ELSE EXIT END ;CLEAREVENT (EVENT )END END END ;CONSTRUCTOR TSTRLISTDLG.INIT (TSTR:STRING );VAR OO1I:TRECT;
OOIOI1II00l1:PSCROLLBAR;BEGIN OO1I.ASSIGN (0 , 0 , 80 , 10 );INHERITED INIT(OO1I , TSTR );OPTIONS := OPTIONS OR
OFCENTERED ;OO1I.ASSIGN (77 , 2 , 78 , 8 );NEW (OOIOI1II00l1 , INIT (OO1I ));INSERT (OOIOI1II00l1 );OO1I.ASSIGN (2 , 2 ,
77 , 8 );STRBOX := NEW (PLISTBOX , INIT (OO1I , 1 , OOIOI1II00l1 ));INSERT (STRBOX );STRBOX ^. LIST := NEW
(PSTRINGCOLLECTION , INIT (0 , 1 ));END ;DESTRUCTOR TSTRLISTDLG.DONE ;BEGIN IF STRBOX ^. LIST <> NIL THEN DISPOSE (STRBOX
^. LIST , DONE );INHERITED DONE END ;PROCEDURE TLOGTERM.STRWRITE (VAR S:TEXTBUF;COUNT:BYTE);VAR OIlO,OIll:WORD;
O10OOlll1lOlO:WORD;BEGIN IF COUNT =0 THEN EXIT ELSE IF COUNT >= BUFSIZE THEN COUNT := BUFSIZE - 1 ;O10OOlll1lOlO :=
LIMIT.Y ;OIll := 0 ;FOR OIlO := 0 TO COUNT - 1 DO CASE S [ OIlO ] OF #13:DEC (COUNT )ELSE BEGIN IF S [ OIlO ] =#10THEN
INC (O10OOlll1lOlO );S [ OIll ] := S [ OIlO ] ;INC (OIll )END END ;WHILE NOT CANINSERT (COUNT ) DO BEGIN QUEBACK :=
NEXTLINE (QUEBACK );DEC (O10OOlll1lOlO )END ;IF LONGINT (QUEFRONT )+ COUNT >= BUFSIZE THEN BEGIN OIlO := BUFSIZE -
QUEFRONT ;MOVE (S , BUFFER ^[ QUEFRONT ] , OIlO );MOVE (S [ OIlO ] , BUFFER ^, COUNT - OIlO );QUEFRONT := COUNT - OIlO
END ELSE BEGIN MOVE (S , BUFFER ^[ QUEFRONT ] , COUNT );INC (QUEFRONT , COUNT )END ;SETLIMIT (CTLOGWIDTH , O10OOlll1lOlO
);SCROLLTO (0 , O10OOlll1lOlO + 1 );OIlO := PREVLINES (QUEFRONT , 1 );IF OIlO <= QUEFRONT THEN OIlO := QUEFRONT - OIlO
ELSE OIlO := BUFSIZE - (OIlO - QUEFRONT );SETCURSOR (OIlO , O10OOlll1lOlO - DELTA.Y - 1 );DRAWVIEW END ;
CONSTRUCTOR TLOGWIN.INIT (WINTITLE:TTITLESTR;ABUFSIZE:WORD);VAR OO1I:TRECT;OOIOI1II000O,OOIOI1II00l1:PSCROLLBAR;
BEGIN DESKTOP ^. GETEXTENT (OO1I );OO1I.A.Y := OO1I.B.Y - 7 ;INHERITED INIT(OO1I , WINTITLE , WNNONUMBER );OPTIONS :=
OPTIONS OR OFTILEABLE ;OOIOI1II000O := STANDARDSCROLLBAR (SBHORIZONTAL OR SBHANDLEKEYBOARD );INSERT (OOIOI1II000O );
OOIOI1II00l1 := STANDARDSCROLLBAR (SBVERTICAL OR SBHANDLEKEYBOARD );INSERT (OOIOI1II00l1 );GETEXTENT (OO1I );OO1I.GROW (-
1 , - 1 );NEW (LOGTERM , INIT (OO1I , OOIOI1II000O , OOIOI1II00l1 , ABUFSIZE ));IF APPLICATION ^. VALIDVIEW (LOGTERM )<>
NIL THEN INSERT (LOGTERM )END ;FUNCTION TCYFILEEDITOR.VALID (COMMAND:WORD):BOOLEAN ;BEGIN IF COMMAND =CMVALID THEN VALID
:= ISVALID ELSE BEGIN VALID := TRUE ;IF MODIFIED THEN BEGIN IF FILENAME =''THEN BEGIN CASE MESSAGEBOX
('Close untitled file?', NIL , MFINFORMATION + MFYESNOCANCEL ) OF CMYES :MODIFIED := FALSE ;CMNO :VALID := FALSE ;
CMCANCEL :VALID := FALSE END END ELSE BEGIN CASE MESSAGEBOX (FILENAME + ' has been modified. Save?', NIL , MFINFORMATION
+ MFYESNOCANCEL ) OF CMYES :BEGIN SAVE ;MODIFIED := FALSE END ;CMNO :MODIFIED := FALSE ;CMCANCEL :VALID := FALSE END END
END END END ;CONSTRUCTOR TCYEDITWINDOW.INIT (VAR BOUNDS:TRECT;FILENAME:FNAMESTR;ANUMBER:INTEGER);
VAR OOIOI1II000O,OOIOI1II00l1:PSCROLLBAR;O1Ol01IOllO1:PINDICATOR;OO1I:TRECT;BEGIN TWINDOW.INIT (BOUNDS , '', ANUMBER );
OPTIONS := OPTIONS OR OFTILEABLE ;OO1I.ASSIGN (18 , SIZE.Y - 1 , SIZE.X - 2 , SIZE.Y );OOIOI1II000O := NEW (PSCROLLBAR ,
INIT (OO1I ));OOIOI1II000O ^. HIDE ;INSERT (OOIOI1II000O );OO1I.ASSIGN (SIZE.X - 1 , 1 , SIZE.X , SIZE.Y - 1 );
OOIOI1II00l1 := NEW (PSCROLLBAR , INIT (OO1I ));OOIOI1II00l1 ^. HIDE ;INSERT (OOIOI1II00l1 );OO1I.ASSIGN (2 , SIZE.Y - 1
, 16 , SIZE.Y );O1Ol01IOllO1 := NEW (PINDICATOR , INIT (OO1I ));O1Ol01IOllO1 ^. HIDE ;INSERT (O1Ol01IOllO1 );GETEXTENT
(OO1I );OO1I.GROW (- 1 , - 1 );EDITOR := NEW (PCYFILEEDITOR , INIT (OO1I , OOIOI1II000O , OOIOI1II00l1 , O1Ol01IOllO1 ,
FILENAME ));INSERT (EDITOR );END ;END .